/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package jcpcotizaciones.Control;


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import jcpcotizaciones.Modelo.Proveedor;

/**
 *
 * @author David
 */
public class ControlProveedor {
    private static List proveedor;
    private static Connection con;

    public static void agregarProveedor (Proveedor p) throws SQLException, Exception{
        ManejadorBaseDatos mbd= ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con= mbd.getConexion();
        if (con == null ){
          throw new SQLException(" No hay conexion ");
        }

        PreparedStatement pst = null;
        try {
          pst = con.prepareStatement("Insert Into proveedor values(?,?,?,?,?,?,?)");
          pst.setString(1,p.getCodigoProvee());
          pst.setString(2,p.getCedula());
          pst.setString(3,p.getNombre());
          pst.setString(4,p.getDireccion());
          pst.setString(5,p.getTelefono());
          pst.setString(6,p.getEmail());
          pst.setString(7,p.getTipo());
          pst.executeUpdate();
        }finally {
            if (pst != null) {
                 pst.close();
            }
        }
    }

public static Proveedor BuscarProveedor(String cod) throws SQLException{
         ResultSet rs = null;
         PreparedStatement pst = null;
         Proveedor pro = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from proveedor where codproveedor = ?");
         pst.setString(1, cod);

         rs = pst.executeQuery();
         while(rs.next()) {
             pro = Proveedor.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return pro;
    }
    }
public static Proveedor BuscarProveedorCed(String ced) throws SQLException{
         if (ced == null) {
          throw new SQLException("No hay elemento clave de la clase proveedor");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Proveedor pro = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from proveedor where cedula = ?");
         pst.setString(1, ced.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             pro = Proveedor.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return pro;
    }
    }
public static Proveedor BuscarProveedorNom(String nom) throws SQLException{
         if (nom == null) {
          throw new SQLException("No hay elemento clave de la clase proveedor");
        }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Proveedor pro = null;
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("select * from proveedor where nombre = ?");
         pst.setString(1, nom.trim());

         rs = pst.executeQuery();
         while(rs.next()) {
             pro = Proveedor.load(rs);
         }
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return pro;
    }
    }

public static boolean ModificarProveedor(Proveedor p, String cod) throws SQLException, Exception{
      if ( BuscarProveedor(cod) == null) {
          throw new SQLException ("Cliente no registrado ");
      }
       PreparedStatement pst = null;
       boolean res=false;
       try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
         pst = con.prepareStatement("Update proveedor set codproveedor = ?, cedula = ?, nombre = ?, direccion = ?, telefono = ?, email = ?, tipo = ? where codproveedor = ?" );
            pst.setString(1,p.getCodigoProvee());
            pst.setString(2,p.getCedula());
            pst.setString(3,p.getNombre());
            pst.setString(4,p.getDireccion());
            pst.setString(5,p.getTelefono());
            pst.setString(6,p.getEmail());
            pst.setString(7,p.getTipo());
            pst.setString(8,cod);
         int r= pst.executeUpdate();
         if (r != 0) {
          res = true;
       }
       } finally {
          if (pst != null) {
            pst.close();
          }
       }
       return res;
     }

 public static void EliminarProveedor(String cod) throws SQLException, Exception{
         if (BuscarProveedor(cod) == null) {
        throw new SQLException("No hay elemento clave de la clase proveedor");
     }
     PreparedStatement pst = null;

     try {
        ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
        mbd.conectar();
        con=mbd.getConexion();
        pst = con.prepareStatement("delete from proveedor where codproveedor = ?");
        pst.setString(1, cod);
        pst.executeUpdate();

     } finally {
        if (pst != null) {
           pst.close();
        }
     }

     }

public static void listarProveedor() throws SQLException, Exception {
     ResultSet rs = null;
     PreparedStatement pst = null;
     proveedor = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement("select * from proveedor");
        rs = pst.executeQuery();
        while(rs.next()) {
           proveedor.add(Proveedor.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
}
}

public static void listarlike(String like) throws Exception{
      ResultSet rs = null;
     PreparedStatement pst = null;
     proveedor = new LinkedList();
     try {
         ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
         mbd.conectar();
         con=mbd.getConexion();
        pst = con.prepareStatement("SELECT * From proveedor where nombre like '%"+like+"%'");
       
        rs = pst.executeQuery();
        while(rs.next()) {
           proveedor.add(Proveedor.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
}
}

    public static List getProveedor(){
    return proveedor;
}

public static void setClientes (List aProveedor){
    proveedor = aProveedor;
}
}
